package com.shuang.tree28;

public class SumOfLeftLeaves {

    //递归法 后序遍历 因为要返回左叶子节点的和
    //判断左叶子方法 是找该节点的父节点 父节点的左节点不为空 且 该节点的左右都为空（该节点是叶子）
    public int sumOfLeftLeaves(TreeNode root) {

        //终止条件
        if (root == null){
            return 0;
        }

        //该节点左右节点都为空 证明是叶子节点了 叶子节点没有左叶子了 递归也可以终止了(不加也可以 就多一层递归)
        if (root.left == null && root.right == null){
            return 0;
        }

        //左
        int leftLeftLeave = sumOfLeftLeaves(root.left);
        //右
        int rightLeftLeave = sumOfLeftLeaves(root.right);

        //中
        int midValue = 0;
        if (root.left != null && root.left.left == null && root.left.right == null){
            midValue = root.left.val;
        }

        //求和
        int sum = leftLeftLeave + rightLeftLeave + midValue;

        return sum;

    }
}
